package com.java.modebing.test.config;

import javax.sql.DataSource;

import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ActivitiConfog {
  @Autowired
  private DataSource dataSource;

  @Bean
  public StandaloneProcessEngineConfiguration processEngineConfiguration() {
      StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
      configuration.setDataSource(dataSource);
      configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
      configuration.setAsyncExecutorActivate(false);
      return configuration;
  }

  @Bean
  public ProcessEngine processEngine() {
      return processEngineConfiguration().buildProcessEngine();
  }

  @Bean
  public RepositoryService repositoryService() {
      return processEngine().getRepositoryService();
  }

  @Bean
  public RuntimeService runtimeService() {
      return processEngine().getRuntimeService();
  }

  @Bean
  public TaskService taskService() {
      return processEngine().getTaskService();
  }
  @Bean
  public HistoryService historyService() {
      return processEngine().getHistoryService();
  }
}